package org.yzhzc.friend.domain.user.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.yzhzc.common.core.domain.BaseEntity;

/**
 * 用户提交记录实体类。
 * 包含用户提交的相关信息，如用户ID、题目ID、竞赛ID、代码、通过状态、分数等。
 */
@EqualsAndHashCode(callSuper = true) // 生成 equals 和 hashCode 方法，并调用父类的方法
@Data
@NoArgsConstructor // 生成无参构造函数
@AllArgsConstructor // 生成全参构造函数
@TableName("tb_user_submit") // 指定数据库表名
public class UserSubmit extends BaseEntity {

    @TableId(value = "SUBMIT_ID", type = IdType.ASSIGN_ID) // 指定主键字段和生成策略
    @JsonSerialize(using = ToStringSerializer.class) // 序列化时使用 ToStringSerializer
    private Long submitId; // 提交记录ID

    private Long userId; // 用户ID，唯一确定用户

    private Long questionId; // 题目ID，唯一确定题目

    private Long examId; // 竞赛ID，唯一确定竞赛（可能为空）

    private Integer programType; // 编程语言类型

    private String userCode; // 用户提交的代码

    private Integer pass; // 是否通过（0：未通过，1：通过）

    private Integer score; // 得分

    private String exeMessage; // 执行结果信息

    private String caseJudgeRes; // 用例判题结果
}
